本文章同時發佈於:
大家好,這幾天較有時間,終於可以好好的思考文章 XD。由於最近周遭的朋友對安全性演算法這個詞時常感到高深莫測,這次就來介紹安全性演算法的應用吧!
安全性演算法是相當複雜的,但事實上他的應用概念是很直覺的,我們不妨直接以應用來了解,演算法採用網路大家常用的 library 即可。
所以這幾篇文章會以實際應用來講解,不琢磨演算法細節。
P.S. 我是從演算法圖鑑這本書來了解安全性演算法的,因為安全性演算法的目標都一樣,所以文章內容雖然都是我內化的,但可能會許多雷同,請多多包涵 XD。
這些演算法到底要保護什麼事情,就是保護傳送這個動作會產生的 4 個問題:
而這些問題可以透過以下 3 個方法來解決:
是怎麼解決的呢?以下會以小明、線上早餐店阿姨與在他們對話間做壞事的壞蛋來講解。
答:
偷取傳輸過程中的資料
假設小明要線上付款早餐店款項,理想如下圖:
❗ 但如果有壞蛋從中攔截封包,就可以取得小明的付款密碼:
怎麼防範?
將傳送的資料加密,這樣就算壞蛋偷走了也不知道資料內容
只要小明與早餐店阿姨有協議好一個雙方才知道的加解密方法,而壞蛋不知道,就可以如以下模式運作:
答:
無法確認傳輸對象的身份
假設小明要購買一杯大冰奶,理想如下圖:
❗ 但如果有壞蛋也聲稱自己是小明,就可以謊報資料:
怎麼防範?
傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼可以是訊息識別碼或數位簽章,因為這兩種技術都可以讓資料產生獨一無二的代碼,小明會透過金鑰與資料一起產生此代碼,早餐店阿姨只需再接收到資料時再用金鑰與資料一起產生代碼,比對代碼是否相同即可判斷是不是小明傳的:
答:
修改傳輸的資料
假設小明要購買一杯大冰奶,理想如下圖:
❗ 但如果壞蛋竄改了小明的訂單,小明就會收到不預期的回應:
怎麼防範?
與電子欺騙的解決方法相同,傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼可以是訊息識別碼或數位簽章,因為這兩種技術都可以讓資料產生獨一無二的代碼,小明會透過金鑰與資料一起產生此代碼,早餐店阿姨只需再接收到資料時再用金鑰與資料一起產生代碼,比對代碼是否相同即可判斷是不是小明傳的:
答:
無法證明傳輸方有做過這件事
❗ 假設小明心懷不軌,買了一杯大冰奶卻不想付錢,他可以這樣做:
怎麼防範?
要求傳輸人員在資料上產生一筆獨一無二的代碼供另一端驗證
此代碼為數位簽章,不可為訊息識別碼,雖然兩者都可產生獨一無二的代碼,但訊息識別碼是雙方共同約定好的金鑰來產生代碼,而數位簽章是小明用個人金鑰產生代碼,只有數位簽章才可證明是小明一位產生的,用訊息是別碼會有可能是雙方任一端產生的。
小明得透過個人金鑰與資料一起產生此代碼,如果小明賴帳,早餐店阿姨只需拿此代碼去跟小明討帳即可:
有了以上慨念後,在針對任何傳輸安全性的問題,你可以透過此表來思考到底要用何種技術解決:
| 竊聽 | 電子欺騙 | 竄改 | 抵賴 | |
|---|---|---|---|---|
| 加密 | v | |||
| 訊息識別碼 | v | v | ||
| 數位簽章 | v | v | v |
丟棄並不是這些演算法保護的目標